import * as Api from '@/api/category'

/**
 * 商品分类 model类
 * CategoryModel
 */
export default {

    // 获取商品分类列表 (用于添加商品的form)
    getCategoryTreeSelect(params) {
        return new Promise((resolve, reject) => {
            Api.list(params)
                .then(result => {
                    const categoryList = result.items
                    // 格式化分类列表
                    const treeData = this.formatTreeData(categoryList)
                    resolve(treeData)
                })
        })
    },

    // 获取商品分类列表 (用于筛选select)
    getListFromScreen(params) {
        return new Promise((resolve, reject) => {
            Api.list(params).then(result => {
                // 格式化分类列表
                const resultList = result.items
                // 格式化为 select列表数据
                const selectList = this.formatTreeData(resultList)
                resolve(selectList)
            })
        })
    },

    /**
     * 格式化分类列表
     * @param {*} list 分类数据源
     * @param {*} disabledParentId
     * @param {*} disabled
     */
    formatTreeData(list, disabledParentId = undefined, disabled = false) {
        const data = []
        list.forEach(item => {
            // 新的元素
            const newItem = {
                title: item.catName,
                label: item.catName,
                key: item.catNo,
                value: item.catNo
            }
            // 禁用的分类
            if (
                [item.catNo, item.parentNo].includes(disabledParentId) ||
                disabled === true
            ) {
                newItem.disabled = true
            }
            // 递归整理子集
            if (item.children && item.children.length) {
                newItem['children'] = this.formatTreeData(item['children'], disabledParentId, newItem.disabled)
            }
            data.push(newItem)
        })
        return data
    }

}
